home *** CD-ROM | disk | FTP | other *** search
/ Tech Win 1995 November / CD [TECH_B].bin / tech_b / delphi / trial / disk4 / doc.pak / WINNLS16.INT < prev    next >
Encoding:
Text File  |  1995-08-08  |  10.2 KB  |  304 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Turbo Pascal Runtime Library                    }
  5. {       Windows API Interface Unit                      }
  6. {                                                       }
  7. {       Copyright (c) 1991 Borland International        }
  8. {                                                       }
  9. {*******************************************************}
  10.  
  11. unit WINNLS16;
  12.  
  13. interface
  14.  
  15. uses WinTypes, WinProcs;
  16.  
  17. { ------------------------ Types from WINDOWS.H ----------------------- }
  18.  
  19. (* EnumFonts font type values *)
  20. const
  21.   EXTERNAL_FONTTYPE     = $0008;
  22.   WIFE_FONTTYPE         = $0008;
  23.  
  24. (* EUDC/GAIJI escapes *)
  25. const
  26.   TTYMODE                 = 2560;
  27.   GAIJIFIRST              = TTYMODE + $10;
  28.   GAIJIFONTSIZE           = GAIJIFIRST;
  29.   GAIJIAREASIZE           = GAIJIFIRST+1;
  30.   GAIJISYSTEMGETFONT      = GAIJIFIRST+2;
  31.   GAIJISYSTEMSETFONT      = GAIJIFIRST+3;
  32.   GAIJIITOCODE            = GAIJIFIRST+4;
  33.   GAIJILOCALOPEN          = GAIJIFIRST+5;
  34.   GAIJILOCALCLOSE         = GAIJIFIRST+6;
  35.   GAIJILOCALSETFONT       = GAIJIFIRST+7;
  36.   GAIJILOCALSAVE          = GAIJIFIRST+8;
  37.   GAIJILOCALRESTORE       = GAIJIFIRST+9;
  38.   GAIJIGETFILENAME        = GAIJIFIRST+10;
  39.   GAIJISETFILENAME        = GAIJIFIRST+11;
  40.   GAIJIGETDESCRIPTIONNAME = GAIJIFIRST+12;
  41.   GAIJIPHYSICALFONTSIZE   = GAIJIFIRST+13;
  42.  
  43. (* EUDC/GAIJI macros *)
  44. {
  45. #define GaijiLocalOpen(hDC) (HANDLE)LOWORD(Escape(hDC,GAIJILOCALOPEN,NULL,NULL,NULL))
  46. #define GaijiLocalClose(hDC,hGaiji) (BOOL)Escape(hDC,GAIJILOCALCLOSE,hGaiji,NULL,NULL)
  47. #define GaijiFontSize(hDC,lpP) Escape(hDC,GAIJIFONTSIZE,NULL,NULL,(LPSTR)lpP)
  48. #define GaijiAreaSize(hDC) (short)Escape(hDC,GAIJIAREASIZE,NULL,NULL,NULL)
  49. #define GaijiLocalSetFont(hDC,hGaiji,hBitmap,lpch) (short)Escape(hDC,GAIJILOCALSETFONT,hGaiji,
  50.   (LPSTR)(LONG)MAKELONG(hBitmap,NULL),lpch)
  51. #define GaijiSystemGetFont(hDC,hBitmap,lpch) (BOOL)Escape(hDC,GAIJISYSTEMGETFONT,NULL,
  52.   (LPSTR)(LONG)MAKELONG(hBitmap,NULL),lpch)
  53. #define GaijiLocalSave(hDC,hGaiji,wFlags) (HANDLE)Escape(hDC,GAIJILOCALSAVE,hGaiji,
  54.   (LPSTR)(LONG)MAKELONG(wFlags,NULL),NULL)
  55. #define GaijiLocalRestore(hDC,hGaiji,hMem) (short)Escape(hDC,GAIJILOCALRESTORE,hGaiji,
  56.   (LPSTR)(LONG)MAKELONG(hMem,NULL),NULL)
  57. #define GaijiSystemSetFont(hDC,index,hBitmap,lpch) (BOOL)Escape(hDC,GAIJISYSTEMSETFONT,index,
  58.   (LPSTR)(LONG)MAKELONG(hBitmap,NULL),lpch)
  59. #define GaijiItoCode(hDC,index,lpch) (BOOL)Escape(hDC,GAIJIITOCODE,index,NULL,lpch)
  60. #define GaijiPhysicalFontSize(hDC,index,lppoint) (BOOL)Escape(hDC,GAIJIPHYSICALFONTSIZE,0,
  61.   (LPSTR)(DWORD)(index),(LPSTR)(lppoint))
  62. }
  63.  
  64. { ------------------------ Types from IME.H --------------------------- }
  65.  
  66. const
  67. (* virtual key *)
  68.   VK_DBE_ALPHANUMERIC           = $0f0;
  69.   VK_DBE_KATAKANA               = $0f1;
  70.   VK_DBE_HIRAGANA               = $0f2;
  71.   VK_DBE_SBCSCHAR               = $0f3;
  72.   VK_DBE_DBCSCHAR               = $0f4;
  73.   VK_DBE_ROMAN                  = $0f5;
  74.   VK_DBE_NOROMAN                = $0f6;
  75.   VK_DBE_ENTERWORDREGISTERMODE  = $0f7;   (* 3.1 *)
  76.   VK_DBE_IME_WORDREGISTER       = VK_DBE_ENTERWORDREGISTERMODE;    (* for 3.0 *)
  77.   VK_DBE_ENTERIMECONFIGMODE     = $0f8;   (* 3.1 *)
  78.   VK_DBE_IME_DIALOG             = VK_DBE_ENTERIMECONFIGMODE;       (* for 3.0 *)
  79.   VK_DBE_FLUSHSTRING            = $0f9;   (* 3.1 *)
  80.   VK_DBE_FLUSH                  = VK_DBE_FLUSHSTRING;              (* for 3.0 *)
  81.   VK_DBE_CODEINPUT              = $0fa;
  82.   VK_DBE_NOCODEINPUT            = $0fb;
  83.   VK_DBE_DETERMINESTRING        = $0fc;   (* 3.1 *)
  84.   VK_DBE_ENTERDLGCONVERSIONMODE = $0fd;   (* 3.1 *)
  85.  
  86.  
  87. (* switch for wParam of IME_MOVECONVERTWINDOW (IME_SETCONVERSIONWINDOW) *)
  88.   MCW_DEFAULT   = $00;
  89.   MCW_RECT      = $01;
  90.   MCW_WINDOW    = $02;
  91.   MCW_SCREEN    = $04;
  92.   MCW_VERTICAL  = $08;
  93.   MCW_HIDDEN    = $10;
  94.   MCW_CMD       = $16;            (* command mask                 *)
  95.  
  96. (* switch for wParam of IME_SETCONVERSIONMODE(IME_SET_MODE) and
  97.    IME_GETCONVERSIONMODE(IME_GET_MODE)
  98. *)
  99.   IME_MODE_ALPHANUMERIC = $0001;
  100.   IME_MODE_KATAKANA     = $0002;
  101.   IME_MODE_HIRAGANA     = $0004;
  102.   IME_MODE_SBCSCHAR     = $0008;
  103.   IME_MODE_DBCSCHAR     = $0010;
  104.   IME_MODE_ROMAN        = $0020;
  105.   IME_MODE_NOROMAN      = $0040;
  106.   IME_MODE_CODEINPUT    = $0080;
  107.   IME_MODE_NOCODEINPUT  = $0100;
  108.  
  109. (* functions *)
  110. const
  111.   IME_GETIMECAPS        = $03;    (* 3.1 *)
  112.   IME_QUERY             = IME_GETIMECAPS;           (* for 3.0 *)
  113.   IME_SETOPEN           = $04;
  114.   IME_GETOPEN           = $05;
  115.   IME_ENABLE            = $06;
  116.   IME_GETVERSION        = $07;    (* 3.1 *)
  117.   IME_SETCONVERSIONWINDOW = $08;  (* 3.1 *)
  118.   IME_MOVECONVERTWINDOW = IME_SETCONVERSIONWINDOW;  (* for 3.0 *)
  119.   IME_SETCONVERSIONMODE = $10;    (* 3.1 *)
  120.   IME_SET_MODE          = IME_SETCONVERSIONMODE;    (* for 3.0 *)
  121.   IME_GETCONVERSIONMODE = $11;    (* 3.1 *)
  122.   IME_GET_MODE          = IME_GETCONVERSIONMODE;    (* for 3.0 *)
  123.   IME_SETCONVERSIONFONT = $12;    (* 3.1 *)
  124.   IME_SETFONT           = IME_SETCONVERSIONFONT;    (* for 3.0 *)
  125.   IME_SENDVKEY          = $13;    (* 3.1 *)
  126.   IME_SENDKEY           = IME_SENDVKEY;             (* for 3.0 *)
  127.   IME_DESTROY           = $14;
  128.   IME_PRIVATE           = $15;
  129.   IME_WINDOWUPDATE      = $16;
  130.   IME_ENTERWORDREGISTERMODE = $18;    (* 3.1 *)
  131.   IME_WORDREGISTER      =  IME_ENTERWORDREGISTERMODE; (* for 3.0 *)
  132.   IME_SETCONVERSIONFONTEX = $19;            (* New for 3.1 *)
  133.  
  134.   IME_SETUNDETERMINESTRING = $50;    (* New for 3.1 (PENWIN) *)
  135.   IME_SETCAPTURE        = $51;    (* New for 3.1 (PENWIN) *)
  136.  
  137.   IME_PRIVATEFIRST      = $0100;   (* New for 3.1 *)
  138.   IME_PRIVATELAST       = $04FF;   (* New for 3.1 *)
  139.  
  140. (* error code *)
  141.   IME_RS_ERROR          = $01;  (* genetal error                      *)
  142.   IME_RS_NOIME          = $02;  (* IME is not installed               *)
  143.   IME_RS_TOOLONG        = $05;  (* given string is too long           *)
  144.   IME_RS_ILLEGAL        = $06;  (* illegal charactor(s) is string     *)
  145.   IME_RS_NOTFOUND       = $07;  (* no (more) candidate                *)
  146.   IME_RS_NOROOM         = $0a;  (* no disk/memory space               *)
  147.   IME_RS_DISKERROR      = $0e;  (* disk I/O error                     *)
  148.   IME_RS_CAPTURED       = $10;  (* IME is captured (PENWIN)           *)
  149.   IME_RS_INVALID        = $11;  (* invalid sub-function was specified *)
  150.   IME_RS_NEST           = $12;  (* called nested                      *)
  151.   IME_RS_SYSTEMMODAL    = $13;  (* called when system mode            *)
  152.  
  153. (* messge ids *)
  154.   WM_IME_REPORT         = $0280;
  155.   IR_STRINGSTART        = $100;
  156.   IR_STRINGEND          = $101;
  157.   IR_OPENCONVERT        = $120;
  158.   IR_CHANGECONVERT      = $121;
  159.   IR_CLOSECONVERT       = $122;
  160.   IR_FULLCONVERT        = $123;
  161.   IR_IMESELECT          = $130;
  162.   IR_STRING             = $140;
  163.   IR_DBCSCHAR           = $160;   (* New for 3.1 *)
  164.   IR_UNDETERMINE        = $170;   (* New for 3.1 *)
  165.   IR_STRINGEX           = $180;   (* New for 3.1 *)
  166.  
  167.   WM_IMEKEYDOWN         = $0290;
  168.   WM_IMEKEYUP           = $0291;
  169.  
  170. type
  171.   PImeStruct = ^TImeStruct;
  172.   TImeStruct = record
  173.     fnc       : word;  { function code  }
  174.     wParam    : word;  { word parameter }
  175.     wCount    : word;  { word count     }
  176.     dchSource,         { offset to Source from top of memory object }
  177.     dchDest   : word;  { offset to Destination from top of memory object }
  178.     lParam1,
  179.     lParam2,
  180.     lParam3   : pointer;
  181.   end;
  182.  
  183.   TWMImeReport = record
  184.     Msg: Cardinal;
  185.     Report: Word;
  186.     Handle: Word;
  187.     Unused: Word;
  188.     Result: Longint
  189.   end;
  190.  
  191. (*
  192. type 
  193.   POLDUNDETERMINESTRUCT = TOLDUNDETERMINESTRUCT;
  194.   TOLDUNDETERMINESTRUCT = record
  195.     uSize,
  196.     uDefIMESize,
  197.     uLength,
  198.     uDeltaStart,
  199.     uCursorPos   : word;
  200.     BYTE        
  201.     cbColor      : array[0..15];
  202. /*  -- These members will have variable length. --
  203.     BYTE        cbAttrib[];
  204.     BYTE        cbText[];
  205.     BYTE        cbIMEDef[];
  206. */
  207. } OLDUNDETERMINESTRUCT,
  208.   NEAR *NPOLDUNDETERMINESTRUCT,
  209.   FAR *LPOLDUNDETERMINESTRUCT;
  210. *)
  211.  
  212. type
  213.   PUNDETERMINESTRUCT = ^TUNDETERMINESTRUCT;
  214.   TUNDETERMINESTRUCT = record
  215.     case integer of 
  216.       0: (
  217.         dwSize : longint;
  218.         uDefIMESize,
  219.         uDefIMEPos,
  220.         uUndetTextLen,
  221.         uUndetTextPos,
  222.         uUndetAttrPos,
  223.         uCursorPos,
  224.         uDeltaStart,
  225.         uDetermineTextLen,
  226.         uDetermineTextPos,
  227.         uDetermineDelimPos,
  228.         uYomiTextLen,
  229.         uYomiTextPos,
  230.         uYomiDelimPos : word; );
  231.      1: (
  232.         data : array[0..0] of char; );
  233.   end;
  234.  
  235. type
  236.   PSTRINGEXSTRUCT = ^TSTRINGEXSTRUCT;
  237.   TSTRINGEXSTRUCT = record
  238.     case integer of 
  239.       0: (
  240.         dwSize : longint;
  241.         uDeterminePos,
  242.         uDetermineDelimPos,
  243.         uYomiPos,
  244.         uYomiDelimPos : word; );
  245.       1: (
  246.         data : array[0..0] of char; );
  247.   end;
  248.   
  249. { ------------------------ functions from IME.H --------------------------- }
  250. function SendIMEMessage( Wnd: HWnd; Ime: Longint  ): Bool;
  251. function SendIMEMessageEx( Wnd: HWnd; Ime: Longint ): Longint; (* New for 3.1 *)
  252.  
  253. { ------------------------ Types from WINNLS.H ------------------------ }
  254. type
  255.   TDateTime = record
  256.     year,
  257.     month,
  258.     day,
  259.     hour,
  260.     min,
  261.     sec   : word;
  262.   end;
  263.  
  264.   PImePro = ^TImePro;
  265.   TImePro = record
  266.     hwnd : HWnd;
  267.     InstDate : TDateTime;
  268.     wVersion : word;
  269.     szDescription : array[0..49] of char;
  270.     szName : array[0..79] of char;
  271.     szOption : array[0..29] of char;
  272.   end;
  273.  
  274. { ------------------------ functions from WINNLS.H ------------------------ }
  275. function IMPGetIME( hwnd : HWnd; lpIMEPro : PImePro ) : bool;
  276. function IMPQueryIME( lpIMEPro : PImePro ) : bool;
  277. function IMPSetIME( hwnd : HWnd; lpIMEPro : PImePro ) : bool;
  278.  
  279. function WINNLSEnableIME( hwnd : HWnd; bool : BOOL ) : bool;
  280. function WINNLSGetEnableStatus( hwnd: HWnd ) : Bool;
  281.  
  282. function WINNLSGetIMEHotkey( hwnd : HWnd ) : Word;
  283.  
  284. (* 
  285. function WINNLSDefIMEProc(
  286.   hwnd: HWnd;
  287.   HDC: HDC;
  288.   WPARAM1, WPARAM2 : Word;
  289.   LPARAM1, LPARAM2 : longint;
  290. ) : Bool;
  291.  
  292. function ControlIMEMessage( 
  293.   hwnd : HWnd 
  294.   lpIMEPro: PImePro, 
  295.   WPARAM1, WPARAM2 : Word; 
  296.   LPARAM : longint;
  297. ) : longint;
  298.  
  299. function IMPRetrieveIME( lpIMEPro: PImePro, WPARAM: Word ): Bool;
  300.  
  301. *)
  302.  
  303. implementation
  304.